unit UValoresEstoqueProduto;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFomCadastro, DBCtrls, StdCtrls, Buttons, ExtCtrls, DB, DBTables,
  Grids, DBGrids, Mask, ToolEdit, CurrEdit, RXDBCtrl, DBClient, Provider,
  Menus, ComCtrls;

type
  TFValoresEstoqueProduto = class(TFormCadastro)
    DsProduto: TDataSource;
    QProduto: TQuery;
    GBPrecoUnitario: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    RxDBCPrecoUnitarioVenda: TRxDBCalcEdit;
    RxDBCValorUnitarioCompra: TRxDBCalcEdit;
    GBEstoque: TGroupBox;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    DSLocalEstoque: TDataSource;
    DSEstoque: TDataSource;
    QLocalEstoque: TQuery;
    QEstoque: TQuery;
    RxDBCQtdEstoque: TRxDBCalcEdit;
    RxDBCQtdDisponivel: TRxDBCalcEdit;
    RxDBCCustoReposicao: TRxDBCalcEdit;
    RxDBCCustoMedioUnitario: TRxDBCalcEdit;
    RxDBCCustoMedioTotal: TRxDBCalcEdit;
    QLocalEstoqueSAL_LOC_PRODUTO: TIntegerField;
    QLocalEstoqueSAL_LOC_LOCAL: TIntegerField;
    QLocalEstoqueSAL_LOC_QUANTIDADEEST: TFloatField;
    QLocalEstoqueSAL_LOC_QUANTIDADEDISP: TFloatField;
    QLocalEstoqueUSUARIO: TStringField;
    QLocalEstoqueDATAMODIFICACAO: TDateTimeField;
    QLocalEstoqueCODIGOEMPRESA: TIntegerField;
    QLocalEstoqueLOC_DESCRICAO: TStringField;
    Panel5: TPanel;
    Label11: TLabel;
    DBText4: TDBText;
    Label12: TLabel;
    Label13: TLabel;
    DBText5: TDBText;
    Label14: TLabel;
    DBText6: TDBText;
    DBText7: TDBText;
    QLocalEstoqueLOC_CODIGO: TIntegerField;
    BtnSelecionar: TBitBtn;
    procedure FormCreate(Sender: TObject);

    Procedure Carrega_Saldo_estoque_e_Local;
    procedure DsProdutoDataChange(Sender: TObject; Field: TField);
    procedure BtnEditarClick(Sender: TObject);
    procedure BtnSalvarClick(Sender: TObject);
    procedure BtnCancelarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DsProdutoStateChange(Sender: TObject);
    procedure BtnConsutaClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure BtnSelecionarClick(Sender: TObject);
    procedure dsCadastroStateChange(Sender: TObject);
    procedure dsCadastroDataChange(Sender: TObject; Field: TField);

  private
    { Private declarations }
  public
    str_Janela : string;
    { Public declarations }
  end;
                                                                                                
var
  FValoresEstoqueProduto: TFValoresEstoqueProduto;

implementation

uses UDMGeral, UDmGestao, UGeral, UPesquisaValoresEstoqueProduto,
  UPesquisaRapida, PedidoVenda_NOVO, VendaNotaFiscal;

{$R *.dfm}

procedure TFValoresEstoqueProduto.Carrega_Saldo_estoque_e_Local;
const Saldo_Estoque = ' SELECT * FROM SALDOESTOQUE WHERE (CODIGOEMPRESA = %s) AND (SAL_EST_PRODUTO = %s) ';

      Saldo_Local   = ' SELECT                                                        '+
                      '         SALDOLOCAL.*,                                         '+
                      '         LOCAL.LOC_CODIGO,                                     '+
                      '         LOCAL.LOC_DESCRICAO                                   '+
                      ' FROM SALDOLOCAL                                               '+
                      '         INNER JOIN LOCAL ON                                   '+
                      '                 (LOCAL.LOC_CODIGO = SALDOLOCAL.SAL_LOC_LOCAL) '+
                      ' WHERE                                                         '+
                      '         (SALDOLOCAL.CODIGOEMPRESA = %s) AND                              '+
                      '         (SAL_LOC_PRODUTO = %s)                                ';
begin

  QEstoque.Close;
  QEstoque.SQL.Clear;
  QEstoque.SQL.Add(Format(Saldo_Estoque,[IntToStr(Codigoempresa),
                                         dsCadastro.DataSet.Fields[0].AsString]));
  QEstoque.Open;

  QLocalEstoque.Close;
  QLocalEstoque.SQL.Clear;
  QLocalEstoque.SQL.Add(Format(Saldo_Local,[IntToStr(Codigoempresa),
                                            dsCadastro.DataSet.Fields[0].AsString]));
  QLocalEstoque.Open;

  DBGrid1.Enabled := True;

end;

procedure TFValoresEstoqueProduto.FormCreate(Sender: TObject);
begin
  inherited;
 // DsProduto.DataSet.Open;
end;

procedure TFValoresEstoqueProduto.DsProdutoDataChange(Sender: TObject;
  Field: TField);
begin
  inherited;
  Carrega_Saldo_estoque_e_Local;
END;  

procedure TFValoresEstoqueProduto.BtnEditarClick(Sender: TObject);
begin

  DsProduto.DataSet.Edit;;

  inherited;

  RxDBCQtdEstoque.Enabled         := False;
  RxDBCQtdDisponivel.Enabled      := False;
  RxDBCCustoReposicao.Enabled     := False;
  RxDBCCustoMedioUnitario.Enabled := False;
  RxDBCCustoMedioTotal.Enabled    := False;

end;

procedure TFValoresEstoqueProduto.BtnSalvarClick(Sender: TObject);
begin

  DsProduto.DataSet.Post;

  inherited;

end;

procedure TFValoresEstoqueProduto.BtnCancelarClick(Sender: TObject);
begin

  DsProduto.DataSet.Cancel;

  inherited;

end;

procedure TFValoresEstoqueProduto.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  FValoresEstoqueProduto := Nil;
  Action                 := caFree;
end;

procedure TFValoresEstoqueProduto.DsProdutoStateChange(Sender: TObject);
begin
  inherited;
  DBGrid1.Enabled := True;
end;

procedure TFValoresEstoqueProduto.BtnConsutaClick(Sender: TObject);
begin
  inherited;


    Application.CreateForm(TFPesquisaRapida,FPesquisaRapida);

    FPesquisaRapida.tipo    := 'PRODUTO';
    CaPtUrA_pEsQuIsA_rApIdA := '';

    FPesquisaRapida.ShowModal;

    if CaPtUrA_pEsQuIsA_rApIdA <> '' then
      QProduto.Locate('PROD_CODIGO',CaPtUrA_pEsQuIsA_rApIdA,[]);

    CaPtUrA_pEsQuIsA_rApIdA := '';

    Exit;


  {
  if FPesquisaValoresEstoqueProduto = nil then
    Application.CreateForm(TFPesquisaValoresEstoqueProduto, FPesquisaValoresEstoqueProduto);

  FPesquisaValoresEstoqueProduto.showmodal;
  }
end;

procedure TFValoresEstoqueProduto.DBGrid1DblClick(Sender: TObject);
begin
  inherited;

  if Panel3.Visible = False then
  begin

    // verifico se a janela esta em modo de pesquisa
    if str_Janela = 'PEDIDOVENDA' THEN
      FPedidoVenda_NOVO.DBLLocalItens.KeyValue := QLocalEstoque.FieldByName('LOC_CODIGO').AsVariant;

    if str_Janela = 'NFVENDA' THEN
      FVendaNotaFiscal.DBLCBLocal.KeyValue := QLocalEstoque.FieldByName('LOC_CODIGO').AsVariant;

    BtnFechar.Click;
    
  end;

end;

procedure TFValoresEstoqueProduto.BtnSelecionarClick(Sender: TObject);
begin
  inherited;
  DBGrid1DblClick(Sender);
end;

procedure TFValoresEstoqueProduto.dsCadastroStateChange(Sender: TObject);
begin
  inherited;
  DBGrid1.Enabled := True;

end;

procedure TFValoresEstoqueProduto.dsCadastroDataChange(Sender: TObject;
  Field: TField);
begin
  inherited;
  Carrega_Saldo_estoque_e_Local;

end;

end.
